"""
@Author : 合肥一元数智教育科技有限公司
@Date :  2025/10/24 13:41
@Description :  元组容器的使用
元组与列表类似，不同之处在于元组的元素不能修改
定义:
   元组使用小括号 ( ),元素之间使用逗号分割
特点:
   1. 有序
   2. 可重复
   3. 不限定类型
"""
#  创建元组
tuple_list = (10, 5, 3, 20, 5)
# 判定数据类型   <class 'tuple'>
print(tuple_list, type(tuple_list))

# 通过索引访问元组元素
print(f'元组中的第一个元素是:{tuple_list[0]}')
print(f'元组中的第二个元素是:{tuple_list[1]}')

# 遍历元组
for item in tuple_list:
    print(item)

# 通过索引能否改变指定位置的元素    不能被修改
# tuple_list[0] = 100   #  TypeError: 'tuple' object does not support item assignment

print('>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<')
#  元组支持的操作 index
item_index = tuple_list.index(3)
print(item_index)

print('>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<')
# 统计指定元素在元组中出现的次数
counts = tuple_list.count(5)
print(counts)

print('>>>>>>>>>>>>>>>>>>>>元组的通用操作<<<<<<<<<<<<<<<<<<<<<<<')
tuple_len = len(tuple_list)
print(tuple_len)

print('*' * 20)
tuple_max = max(tuple_list)
print(f'{tuple_list}中最大值是:{tuple_max}')

tuple_min = min(tuple_list)
print(f'{tuple_list}中最小值是:{tuple_min}')

print('*' * 20)
tuple_sum = tuple_list + (10, 20, 30)
print(tuple_sum)

tuples = tuple_list * 2
print(tuples)
print(tuple_list)

print('>>>>>>>>>>>>>>>>>>>>元组的切片<<<<<<<<<<<<<<<<<<<<<<<')
tuple_sub = tuple_list[0:3]
print(tuple_sub)

#  元组支持负索引
tuple_item = tuple_list[-3:-1]
print(tuple_item)

# 删除元组
del tuple_list
# print(tuple_list)     NameError: name 'tuple_list' is not defined. Did you mean: 'tuple_len'?


# 元组和列表之间的转换
num_list = [1, 2, 3, 4, 5]
print(num_list,type(num_list))

num_tuple = tuple(num_list)
print(num_tuple,type(num_tuple))

num_list = list(num_tuple)
print(num_list,type(num_list))

#  定义元组时  如果是单元素元组 元素后需要加一个逗号
tuple_one = (1,)
print(tuple_one,type(tuple_one))
